package com.world.rickcloudendpoint.common.utils;

/**
 * @description: 端序转换
 * @author: jlsong
 * @date: 2021/12/21 22:16:16
 * @version: 1.0
 */
public interface Endian {

    Endian littleEndian = new LittleEndian();
    Endian bigEndian = new BigEndian();

    Endian defaultEndian = littleEndian;

    /**
     * 将字节数组转换成长整型
     *
     * @param bytes 字节数组
     * @return 长整型
     */
    long getLong(byte[] bytes);

    /**
     * 将字节数组转换成整型
     *
     * @param bytes 字节数组
     * @return 整型
     */
    int getInt(byte[] bytes);

    /**
     * 将字节数组转换成短整型
     *
     * @param bytes 字节数组
     * @return 短整型
     */
    short getShort(byte[] bytes);

    /**
     * 将字节数组转换成字符型
     *
     * @param bytes 字节数组
     * @return 字符型
     */
    char getChar(byte[] bytes);

    /**
     * 将长整型转换成字节数组
     *
     * @param val 长整型
     * @return 字节数组
     */
    byte[] getLongBytes(long val);

    /**
     * 将整型转换成字节数组
     *
     * @param val 整型
     * @return 字节数组
     */
    byte[] getIntBytes(int val);

    /**
     * 将短整型转换成字节数组
     *
     * @param val 短整型
     * @return 字节数组
     */
    byte[] getShortBytes(short val);

    /**
     * 将字符型转换成字节数组
     *
     * @param val 字符型
     * @return 字节数组
     */
    byte[] getCharBytes(char val);
}
